.TITLE DRSST .IDENT /05.01/ ; ; Copyright (c) 1995-1999 by Mentec, Inc., U.S.A. ; All rights reserved ; ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED ; OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE. ; ; D. N. CUTLER 30-AUG-73 ; ; PREVIOUSLY MODIFIED BY: ; ; D. N. CUTLER ; ; MODIFIED FOR RSX-11M-PLUS VERSION 1.0 BY: ; ; T. J. MILLER ; ; MODIFIED FOR RSX-11M-PLUS VERSION 4.1 BY: ; ; B. S. MCCARTHY 28-SEP-87 05.01 ; ; BM403 -- ALLOW VECTOR TO BE PLACED ; IN READ ONLY REGION ; MACRO LIBRARY CALLS ; .MCALL HDRDF$ HDRDF$ ;DEFINE TASK HEADER OFFSETS ;+ ; **-$DRSDV-SPECIFY DEBUGGING AID SST VECTOR ; ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO RECORD THE ADDRESS AND LENGTH ; OF A VECTOR OF SST SERVICE ROUTINE ENTRY POINTS FOR USE BY AN INTRA- ; TASK DEGUGGING AID (E.G. ODT) ; ; DPB FORMAT: ; ; WD. 00 -- DIC (103.),DPB SIZE(3.). ; WD. 01 -- ADDRESS OF THE SST VECTOR. ; WD. 02 -- NUMBER OF ENTRIES IN THE SST VECTOR. ; ; SST VECTOR FORMAT: ; ; WD. 00 -- TRAPS TO 4 (ODD ADDRESS, NONEX MEM, ETC.). ; WD. 01 -- SEGMENT FAULT. ; WD. 02 -- TRACE TRAP (T-BIT) OR EXECUTION OF BPT INSTRUCTION. ; WD. 03 -- EXECUTION OF AN IOT INSTRUCTION. ; WD. 04 -- EXECUTION OF AN ILLEGAL OR RESERVED INSTRUCTION. ; WD. 05 -- EXECUTION OF A NON RSX EMT INSTRUCTION. ; WD. 06 -- EXECUTION OF A TRAP INSTRUCTION. ; WD. 07 -- PDP 11/40 FLOATING POINT EXCEPTION FAULT. ; ; INPUTS: ; ; R2=ADDRESS OF THE TASK STATUS WORD OF THE CURRENT TASK. ; R3=ADDRESS OF THE SECOND WORD IN THE DPB. ; R4=ADDRESS OF THE HEADER OF THE CURRENT TASK. ; R5=ADDRESS OF THE TCB OF THE CURRENT TASK. ; ; OUTPUTS: (DIRECTIVE STATUS AND PS RETURNED TO TASK) ; ; C=0 IF DIRECTIVE IS SUCCESSFULLY COMPLETED. ; DIRECTIVE STATUS OF +1 IS RETURNED. ; C=1 IF DIRECTIVE IS REJECTED. ; DIRECTIVE STATUS OF 'D.RS98' IS RETURNED IF PART OF VECTOR ; IS OUTSIDE OF ISSUING TASK'S ADDRESS SPACE, ; VECTOR ADDRESS OF ZERO IS SPECIFIED, OR THE ; VECTOR SIZE IS GREATER THAN 31. WORDS. ;- .ENABL LSB $DRSDV::ADD #H.ODVL,R4 ;POINT TO ODT VECTOR LENGTH IN HEADER BR 10$ ;FINISH UP IN COMMON CODE ;+ ; **-$DRSTV-SPECIFY TASK SST VECTOR ; ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO RECORD THE ADDRESS AND LENGTH OF ; A VECTOR OF SST SERVICE ROUTINE ENTRY POINT FOR USE BY THE ISSUING TASK. ; ; DPB FORMAT: ; ; WD. 00 -- DIC(105.),DPB SIZE(3.). ; WD. 01 -- ADDRESS OF THE SST VECTOR. ; WD. 02 -- NUMBER OF ENTRIES IN THE SST VECTOR. ; ; SST VECTOR FORMAT: ; ; WD. 00 -- TRAPS TO 4 (ODD ADDRESS, NONEX MEM, ETC.). ; WD. 01 -- SEGMENT FAULT. ; WD. 02 -- TRACE TRAP (T-BIT) OR EXECUTION OF A BPT INSTRUCTION. ; WD. 03 -- EXECUTION OF AN IOT INSTRUCTION. ; WD. 04 -- EXECUTION OF AN ILLEGAL OR RESERVED INSTRUCTION. ; WD. 05 -- EXECUTION OF A NON RSX EMT INSTRUCTION. ; WD. 06 -- EXECUTION OF A TRAP INSTRUCTION. ; WD. 07 -- PDP 11/40 FLOATING POINT EXCEPTION FAULT. ; ; INPUTS: ; ; R2=ADDRESS OF THE TASK STATUS WORD OF THE CURRENT TASK. ; R3=ADDRESS OF THE SECOND WORD IN THE DPB. ; R4=ADDRESS OF THE HEADER OF THE CURRENT TASK. ; R5=ADDRESS OF THE TCB OF THE CURRENT TASK. ; ; OUTPUTS: (DIRECTIVE STATUS AND PS RETURNED TO TASK) ; ; C=0 IF DIRECTIVE IS SUCCESSFULLY COMPLETED. ; DIRECTIVE STATUS OF +1 IF RETURNED. ; C=1 IF DIRECTIVE IS REJECTED. ; DIRECTIVE STATUS OF 'D.RS98' IS RETURNED IF PART OF VECTOR ; IS OUTSIDE OF ISSUING TASK'S ADDRESS SPACE, ; VECTOR ADDRESS OF ZERO IS SPECIFIED, OR THE ; VECTOR SIZE IS GREATER THAN 31. WORDS. ;- $DRSTV::ADD #H.TKVL,R4 ;POINT TO TASK VECTOR LENGTH IN HEADER 10$: MOV (R3)+,R0 ;GET ADDRESS OF VECTOR BEQ 20$ ;IF EQ DEASSIGN VECTOR MOV (R3),R1 ;GET LENGTH OF SST VECTOR BEQ 15$ ;IF EQ DEASSIGN VECTOR CMP (R3),#31. ;VECTOR TOO BIG? BHI 30$ ;IF HI YES ASL R1 ;CONVERT LENGTH TO BYTES .IF DF S$$LIB BIC #1,R0 ;INSURE LOW BIT IS CLEAR .IFF ; DF S$$LIB BIT #1,R0 ;SPECIFIED ADDRESS ODD? BNE 30$ ;IF NE YES, RETURN FAILED ;DIRECTIVE STATUS .IFTF ; DF S$$LIB CALL $ACHRO ;CHECK FOR AT LEAST READ ONLY ;ACCESS TO SPECIFIED VECTOR BCS 30$ ;IF CS NO ACCESS, RETURN STATUS 15$: MOV (R3),(R4) ;SET SST VECTOR LENGTH ASL (R4) ;CONVERT LENGTH TO BYTES .IFT ; DF S$$LIB 20$: MOV -(R3),R2 ;PICK UP SST VECTOR ADDRESS CALL $CALTA ;CALCULATE PROPER VECTOR ADDRESS MOV R2,-(R4) ;STORE PROPER ADDRESS .IFF ; DF S$$LIB 20$: MOV -(R3),-(R4) ;SET SST VECTOR ADDRESS .ENDC ; DF S$$LIB RETURN ;RETURN DIRECTIVE STATUS OF +1 30$: DRSTS D.RS98 ;SET DIRECTIVE STATUS .DSABL LSB .END